#!/bin/bash
set -e

#使用之前需要把kml、lapack、blas、cblas的路径加入环境变量LD_LIBRARY_PATH、LIBRAYR_PATH、C_INCLUDE_PATH中

cd src/SYSV_RK
rm -f *.so
#生成.o文件
gcc -c ilaenv.c -o ilaenv.o -fPIC -D SINGLE
gcc -c LASYF_RK.c -o LASYF_RK_SINGLE.o -fPIC -D SINGLE
gcc -c SYSV_RK.c -o SYSV_RK_SINGLE.o -fPIC -D SINGLE
gcc -c SYTF2_RK.c -o SYTF2_RK_SINGLE.o -fPIC -D SINGLE
gcc -c SYTRF_RK.c -o SYTRF_RK_SINGLE.o -fPIC -D SINGLE
gcc -c SYTRS_3.c -o SYTRS_3_SINGLE.o -fPIC -D SINGLE

gcc -c LASYF_RK.c -o LASYF_RK_DOUBLE.o -fPIC -D DOUBLE
gcc -c SYSV_RK.c -o SYSV_RK_DOUBLE.o -fPIC -D DOUBLE
gcc -c SYTF2_RK.c -o SYTF2_RK_DOUBLE.o -fPIC -D DOUBLE
gcc -c SYTRF_RK.c -o SYTRF_RK_DOUBLE.o -fPIC -D DOUBLE
gcc -c SYTRS_3.c -o SYTRS_3_DOUBLE.o -fPIC -D DOUBLE

gcc -c LASYF_RK.c -o LASYF_RK_COMPLEX.o -fPIC -D COMPLEX
gcc -c SYSV_RK.c -o SYSV_RK_COMPLEX.o -fPIC -D COMPLEX
gcc -c SYTF2_RK.c -o SYTF2_RK_COMPLEX.o -fPIC -D COMPLEX
gcc -c SYTRF_RK.c -o SYTRF_RK_COMPLEX.o -fPIC -D COMPLEX
gcc -c SYTRS_3.c -o SYTRS_3_COMPLEX.o -fPIC -D COMPLEX

gcc -c LASYF_RK.c -o LASYF_RK_COMPLEX16.o -fPIC -D COMPLEX16
gcc -c SYSV_RK.c -o SYSV_RK_COMPLEX16.o -fPIC -D COMPLEX16
gcc -c SYTF2_RK.c -o SYTF2_RK_COMPLEX16.o -fPIC -D COMPLEX16
gcc -c SYTRF_RK.c -o SYTRF_RK_COMPLEX16.o -fPIC -D COMPLEX16
gcc -c SYTRS_3.c -o SYTRS_3_COMPLEX16.o -fPIC -D COMPLEX16

cd ../SYSV_ROOK
#生成.o文件
gcc -c my_syr.c -o my_syr.o -fPIC -D SINGLE
gcc -c LASYF_ROOK.c -o LASYF_ROOK_SINGLE.o -fPIC -D SINGLE
gcc -c SYSV_ROOK.c -o SYSV_ROOK_SINGLE.o -fPIC -D SINGLE
gcc -c SYTF2_ROOK.c -o SYTF2_ROOK_SINGLE.o -fPIC -D SINGLE
gcc -c SYTRF_ROOK.c -o SYTRF_ROOK_SINGLE.o -fPIC -D SINGLE
gcc -c SYTRS_ROOK.c -o SYTRS_ROOK_SINGLE.o -fPIC -D SINGLE

gcc -c LASYF_ROOK.c -o LASYF_ROOK_DOUBLE.o -fPIC -D DOUBLE
gcc -c SYSV_ROOK.c -o SYSV_ROOK_DOUBLE.o -fPIC -D DOUBLE
gcc -c SYTF2_ROOK.c -o SYTF2_ROOK_DOUBLE.o -fPIC -D DOUBLE
gcc -c SYTRF_ROOK.c -o SYTRF_ROOK_DOUBLE.o -fPIC -D DOUBLE
gcc -c SYTRS_ROOK.c -o SYTRS_ROOK_DOUBLE.o -fPIC -D DOUBLE

gcc -c LASYF_ROOK.c -o LASYF_ROOK_COMPLEX.o -fPIC -D COMPLEX
gcc -c SYSV_ROOK.c -o SYSV_ROOK_COMPLEX.o -fPIC -D COMPLEX
gcc -c SYTF2_ROOK.c -o SYTF2_ROOK_COMPLEX.o -fPIC -D COMPLEX
gcc -c SYTRF_ROOK.c -o SYTRF_ROOK_COMPLEX.o -fPIC -D COMPLEX
gcc -c SYTRS_ROOK.c -o SYTRS_ROOK_COMPLEX.o -fPIC -D COMPLEX

gcc -c LASYF_ROOK.c -o LASYF_ROOK_COMPLEX16.o -fPIC -D COMPLEX16
gcc -c SYSV_ROOK.c -o SYSV_ROOK_COMPLEX16.o -fPIC -D COMPLEX16
gcc -c SYTF2_ROOK.c -o SYTF2_ROOK_COMPLEX16.o -fPIC -D COMPLEX16
gcc -c SYTRF_ROOK.c -o SYTRF_ROOK_COMPLEX16.o -fPIC -D COMPLEX16
gcc -c SYTRS_ROOK.c -o SYTRS_ROOK_COMPLEX16.o -fPIC -D COMPLEX16

#生成静态库、动态库
ar -rsv ../../libSYSV.a *.o ../SYSV_RK/*.o
gcc -shared -fPIC -o ../../libSYSV.so *.o ../SYSV_RK/*.o

echo "ok!!"


#cd ../../test/perf_test_ROOK
#gfortran -std=c99 *.c *.f ../../src/SYSV_ROOK/*.c -o perf_test_ROOK_SINGLE.o -fopenmp -I ../../src/SYSV_ROOK -llapack -lkblas -lkservice -O2 -D SINGLE
#gfortran -std=c99 *.c *.f ../../src/SYSV_ROOK/*.c -o perf_test_ROOK_DOUBLE.o -fopenmp -I ../../src/SYSV_ROOK -llapack -lkblas -lkservice -O2 -D DOUBLE
#gfortran -std=c99 *.c *.f ../../src/SYSV_ROOK/*.c -o perf_test_ROOK_COMPLEX.o -fopenmp -I ../../src/SYSV_ROOK -llapack -lkblas -lkservice -O2 -D COMPLEX
#gfortran -std=c99 *.c *.f ../../src/SYSV_ROOK/*.c -o perf_test_ROOK_COMPLEX16.o -fopenmp -I ../../src/SYSV_ROOK -llapack -lkblas -lkservice -O2 -D COMPLEX16
#
#cd ../perf_test_RK
#gfortran -std=c99 *.c *.f ../../src/SYSV_RK/*.c -o perf_test_RK_SINGLE.o -fopenmp -I ../../src/SYSV_RK -llapack -lkblas -lkservice -O2 -D SINGLE
#gfortran -std=c99 *.c *.f ../../src/SYSV_RK/*.c -o perf_test_RK_DOUBLE.o -fopenmp -I ../../src/SYSV_RK -llapack -lkblas -lkservice -O2 -D DOUBLE
#gfortran -std=c99 *.c *.f ../../src/SYSV_RK/*.c -o perf_test_RK_COMPLEX.o -fopenmp -I ../../src/SYSV_RK -llapack -lkblas -lkservice -O2 -D COMPLEX
#gfortran -std=c99 *.c *.f ../../src/SYSV_RK/*.c -o perf_test_RK_COMPLEX16.o -fopenmp -I ../../src/SYSV_RK -llapack -lkblas -lkservice -O2 -D COMPLEX16
#
#cd ../func_test_RK
#gfortran -std=c99 *.c *.f ../../src/SYSV_RK/*.c -o func_test_RK_SINGLE.o -fopenmp -I ../../src/SYSV_RK -llapack -lcblas -lblas -lkservice -O2 -D SINGLE
#gfortran -std=c99 *.c *.f ../../src/SYSV_RK/*.c -o func_test_RK_DOUBLE.o -fopenmp -I ../../src/SYSV_RK -llapack -lcblas -lblas -lkservice -O2 -D DOUBLE
#gfortran -std=c99 *.c *.f ../../src/SYSV_RK/*.c -o func_test_RK_COMPLEX.o -fopenmp -I ../../src/SYSV_RK -llapack -lcblas -lblas -lkservice -O2 -D COMPLEX
#gfortran -std=c99 *.c *.f ../../src/SYSV_RK/*.c -o func_test_RK_COMPLEX16.o -fopenmp -I ../../src/SYSV_RK -llapack -lcblas -lblas -lkservice -O2 -D COMPLEX16
#
#cd ../func_test_ROOK
#gfortran -std=c99 *.c *.f ../../src/SYSV_ROOK/*.c -o func_test_ROOK_SINGLE.o -fopenmp -I ../../src/SYSV_ROOK -llapack -lcblas -lblas -lkservice -O2 -D SINGLE
#gfortran -std=c99 *.c *.f ../../src/SYSV_ROOK/*.c -o func_test_ROOK_DOUBLE.o -fopenmp -I ../../src/SYSV_ROOK -llapack -lcblas -lblas -lkservice -O2 -D DOUBLE
#gfortran -std=c99 *.c *.f ../../src/SYSV_ROOK/*.c -o func_test_ROOK_COMPLEX.o -fopenmp -I ../../src/SYSV_ROOK -llapack -lcblas -lblas -lkservice -O2 -D COMPLEX
#gfortran -std=c99 *.c *.f ../../src/SYSV_ROOK/*.c -o func_test_ROOK_COMPLEX16.o -fopenmp -I ../../src/SYSV_ROOK -llapack -lcblas -lblas -lkservice -O2 -D COMPLEX16